#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> as(m + 1, vector<int>(n + 1));
        for (int i = 1; i <= m; i++)
        {
            for (int j = 1; j <= n; j++)
            {
                if (i == 1 && j == 1)
                {
                    as[i][j] = 1;
                    continue;
                }
                as[i][j] = as[i - 1][j] + as[i][j - 1];
            }
        }
        return as[m][n];
        // vector<vector<int>> as(m+1,vector<int>(n+1));
        // return dfs(m,n,as);
    }
    int dfs(int i, int j, vector<vector<int>>& as)
    {
        if (as[i][j] != 0)
        {
            return as[i][j];
        }
        if (i == 0 || j == 0)
        {
            return 0;
        }
        if (i == 1 && j == 1)
        {
            as[i][j] = 1;
            return 1;
        }
        as[i][j] = dfs(i - 1, j, as) + dfs(i, j - 1, as);
        return as[i][j];
    }
};